The following disclosures includes the paper by H. J. Caulfield, W. T. Rhodes, M. J. Foster, and Sam Horvitz, Optical Implementation of Systolic Array Processing, Optics Communications, 40, 86-90, Dec. 15, 1981, wherein it is shown how certain algorithms for matrix-vector multiplication can be implemented using acoustooptic cells for multiplication and input data transfer and using CCD (charge coupled device) detector arrays for accumulation and output of the results. No 2-D matrix mask is required; matrix changes are implemented electronically. A system for multiplying a 50-component nonnegative-real matrix is described. Modifications for bipolar-real and complex-valued processing are possible, as are extensions to matrix-matrix multiplication and multiplication of a vector by multiple matrices.
During the past several years, Kung and Leiserson at Carnegie-Mellon University [1,2] have developed a new type of computational architecture which they call "systolic array processing". Although there are numerous architectures for systolic array processing, a general feature is a flow of data through similar or identical arithmetic or logic units where fixed operations, such as multiplication and addition, are performed. The data tend to flow in a pulsating manner, hence the name "systolic". Systolic array processors appear to offer certain design and speed advantageous for VLSI (very large scale integration) implementation over previous calculational algorithms for such operations as matrix-vector multiplication, matrix-matrix multiplication, pattern recognition in context, and digital filtering. This paper grew out of our desire to explore the possibility of improving systolic array processors by using optical input and output as well as our desire to explore new architectures for optical signal processing. We will concentrate on describing the particular case of matrix-vector multiplication, but note that many other operations can be performed in an analogous manner.
In systolic multiplication of a vector by a matrix the problem we address is that of evaluating a vector y given by EQU y=Ax, (1)
where A is an n by n matrix, and x and y are n-component vectors. We assume that A has a bandwidth w, i.e., all of its non-zero entries are clustered in a band of width w around the major diagonal. Such matrices arise frequently in the solution of boundary value problems for ordinary differential equations. A systolic array that solves this problem is introduced by Kung and Leiserson [1,2] and will be reviewed briefly here.